﻿using System;
using System.Collections.Generic;
public class ObservableList<T> : List<T>
{
    // 事件：当列表数量发生变化时触发
    public event Action<List<T>,bool,T> CountChanged;//自己、增加还是减少、增加或者减少的元素

    // 事件：当列表中的元素被修改时触发
    public event Action<T> ItemModified;

    // 重写 Generate 方法
    public new void Add(T item)
    {
        base.Add(item);
        CountChanged?.Invoke(this,true,item); // 触发数量变化事件
    }

    // 重写 RemoveBuff 方法
    public new bool Remove(T item)
    {
        bool result = base.Remove(item);
        if (result)
        {
            CountChanged?.Invoke(this, false, item); // 触发数量变化事件
        }
        return result;
    }
    // 其他方法（如 Insert、Clear 等）也可以根据需要重写

    // 重写索引器，监听元素修改
    public new T this[int index]
    {
        get => base[index];
        set
        {
            base[index] = value;
            ItemModified?.Invoke(value); // 触发元素修改事件
        }
    }


}